package fr.afcepf.atod18.restaurants.entity;



public class ProduitsPourPanier implements Comparable<Object> {
	private Produit prod;
	private int qteAAjouter;
	private double prixAPayer;
	
	
	public Produit getProd() {
		return prod;
	}
	public void setProd(Produit prod) {
		this.prod = prod;
	}
	public int getQteAAjouter() {
		return qteAAjouter;
	}
	public void setQteAAjouter(int qteAAjouter) {
		this.qteAAjouter = qteAAjouter;
	}
	public double getPrixAPayer() {
		return prixAPayer;
	}
	public void setPrixAPayer(double prixAPayer) {
		this.prixAPayer = prixAPayer;
	}
    @Override
    public int compareTo(Object o) {
    	ProduitsPourPanier produitPourPanier = (ProduitsPourPanier) o;
		int numOrdre1 = getNumOrdre(this);
		int numOrdre2 = getNumOrdre(produitPourPanier);
		if (numOrdre1 == numOrdre2) {
			return prod.getNom().compareTo(produitPourPanier.getProd().getNom());
		} else {
			return numOrdre1 - numOrdre2;
		}    }
	
	private int getNumOrdre(ProduitsPourPanier prodPourPanier) {
		int numOrdre = 0;
		if(prodPourPanier.prod instanceof Boisson) { // boissons
			numOrdre = 900;
		} else if (prodPourPanier.prod instanceof Plat) {
			if (((Plat) prodPourPanier.prod).getTypePlat().getId() == 1) { // entrees
				numOrdre = 100;
			} else if (((Plat) prodPourPanier.prod).getTypePlat().getId() == 2) { // plats chauds
				numOrdre = 200;
			}  else if (((Plat) prodPourPanier.prod).getTypePlat().getId() == 3) { // Accompagnement
				numOrdre = 400;
			} else if (((Plat) prodPourPanier.prod).getTypePlat().getId() == 4) { // desserts
				numOrdre = 300;
			} else {
				numOrdre = 800;
			}
		} else {
			numOrdre = 990;
		}
		return numOrdre;
	}
}
